It is common for a commercially successful computer program to undergo a number of different renditions. For example, the computer program may be upgraded from its initial version (Version 1.0) to a more powerful version (Version 2.0). A change in the version of an operating system will often necessitate the generation of another rendition of the program. Another type of rendition change occurs when the computer program is translated from one human language to another human language, such as a translation from English to Japanese. More significant changes are necessary if the computer program is expanded for operation within a second operating system, such as the first rendition for use in a Windows environment and a second rendition for use within a Linux environment.
For each of these types of rendition changes, consistency in the content presented to a program user is a consideration. The visual content may be presented in a number of different content objects, such as dialog boxes, list boxes, error messages, pop-up menus, pull-down menus, and other application windows.
Consistency in the content of such content objects is perhaps given the greatest attention in the area of providing translations. In addition to linguistic differences, translations may involve differences in the systems of measurements, differences in currency, and a number of other possible locale-specific variations. For example, a dialog box that is sufficiently large to display English terms may be insufficient to display such terms in a another language. There is a wide range of potential defects that can arise when the program is changed from an original rendition to an alternative rendition.
The translation and localization of a computer program may require a team of individuals, particularly if the program is highly sophisticated. In addition to expertise in the relevant languages and localization considerations, programming expertise is often required. While there do exist tools to assist programmers tasked with the responsibility of creating alternative language renditions of a program, errors nevertheless occur. To address these errors, alternative language renditions of a computer program often go through quality assurance (QA) testing that focuses on accuracy in language translations prior to their release. Additionally, customer support is made available for addressing the problems that occur as a result of any errors that are not detected and corrected during the quality assurance testing.
The quality assurance testing is typically performed manually. For example, quality assurance personnel may carefully and thoroughly run an alternative language rendition of a program and review every content object and other aspect of the program which was affected by the translation process. This review requires sufficient hardware resources, both the original and alternative language renditions of the program, and familiarity with the workings of the program in order for the review to produce accurate and correct results. Hiring quality assurance personnel, possibly in remote locations, in order to take advantage of language expertise and then providing such personnel with sufficient hardware resources and training such personnel to become familiar with the program can be very expensive and time-consuming. The need to be familiar with the workings of the program may be reduced by allowing quality assurance personnel to simultaneously execute multiple renditions of the program and visually compare results, such as a comparison of the help menus of the original rendition and the alternative language program. However, simultaneously executing multiple renditions of a program becomes less cost efficient as the sophistication of the program increases, such as with virtualization products that may require the cooperation of multiple servers in order to properly execute.
In contrast to the purely manual techniques for quality assurance of alternative language renditions, testing of other aspects of a program can currently be done in an automated process. For example, SilkTest® from Borland Software Corporation is a software tool for testing functional aspects of software applications. Such automated testing can significantly reduce the required time for preparing a program for end users. Moreover, since automated testing can be performed without human intervention, costs are reduced and it is possible to record every action in case of a failure. The use of automation more readily allows extensive variations in the testing of each program feature.